In [3]:
import pandas as pd
In [4]:
df = pd.read_csv('city.csv', sep=';')
df
Out[4]:
ID Name CountryCode District Population
0 1 Kabul AFG Kabol 1780000
1 2 Qandahar AFG Qandahar 237500
2 3 Herat AFG Herat 186800
3 4 Mazar-e-Sharif AFG Balkh 127800
4 5 Amsterdam NLD Noord-Holland 731200
... ... ... ... ... ...
4074 4075 Khan Yunis PSE Khan Yunis 123175
4075 4076 Hebron PSE Hebron 119401
4076 4077 Jabaliya PSE North Gaza 113901
4077 4078 Nablus PSE Nablus 100231
4078 4079 Rafah PSE Rafah 92020

4079 rows × 5 columns

In [1]:
# Задание 1
# Сгруппировать данные по CountryCode
# получить максимум и минимум по Population
# взять первых 10 результатов
# нормализовать индексы полученного датафрейма
In [5]:
df.groupby('CountryCode').agg(['max', 'min'])['Population'].reset_index().head(10)
Out[5]:
CountryCode max min
0 ABW 29034 29034
1 AFG 1780000 127800
2 AGO 2022000 118200
3 AIA 961 595
4 ALB 270000 270000
5 AND 21189 21189
6 ANT 2345 2345
7 ARE 669181 114395
8 ARG 2982146 91101
9 ARM 1248700 172700
In [2]:
# Задание 2
# Сгруппировать данные по CountryCode
# получить разницу между максимум и минимум по Population
# взять первые 10 результатов
# на выходе получить именно датафрейм (не серию)
In [9]:
df.groupby('CountryCode').apply(lambda x: x['Population'].max() - x['Population'].min()).reset_index().head(10)
Out[9]:
CountryCode 0
0 ABW 0
1 AFG 1652200
2 AGO 1903800
3 AIA 366
4 ALB 0
5 AND 0
6 ANT 0
7 ARE 554786
8 ARG 2891045
9 ARM 1076000
In [ ]: